﻿using DataAccess;
using KhoaLuan.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Script.Serialization;


namespace KhoaLuan.MainSys.ProcessAJAX
{
    public partial class AjaxArticle : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        [WebMethod]
        public static string GetListArticle(int currentpage, int numberinpage, string keyword)
        {
            try
            {
                string link = "~/MainSys/Manager/Controls/ctManagementArticle.ascx";
                var currentuser = UserLogin.GetUserID;
                if (!SecurityServices.HasPermison(link, currentuser, TypeAudit.View))
                    return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Bạn không có quyền xem danh sách bài viết" });
                var org = UserLogin.GetCurrentOrg;
                if (org == null)
                    throw new Exception();
                tbPosts_Proxy proxy = new tbPosts_Proxy();
                int totalitem = 0;
                keyword = keyword.ToLower();
                var list = proxy.SelectAllByOrg(org.OrgID).Where(x => x.Content.ToLower().Contains(keyword)
                                    || x.Intro.ToLower().Contains(keyword)
                                    || x.Title.ToLower().Contains(keyword));
                totalitem = list.Count();
                var list2 = list.Where(x => x.OrgID == org.OrgID).Skip((currentpage - 1) * numberinpage).Take(numberinpage);

                var proxyuser = new tbUsers_Proxy();
                List<object> data = new List<object>();
                foreach (var x in list2)
                {
                    var ucreate = proxyuser.GetById_tbUsers_Proxy(x.AuthorID).ToObject<tbUsers>();
                    var ucupdate = proxyuser.GetById_tbUsers_Proxy(x.UpdateAuthorID).ToObject<tbUsers>();
                    if (ucreate != null)
                    {
                        data.Add(new
                        {
                            id = x.PostsID,
                            title = x.Title.Length > 40 ? x.Title.Substring(0, 40) + "..." : x.Title,
                            createby = ucreate.FullName,
                            createdate = x.CreatedDate.ToShortDateString(),
                            editby = ucupdate != null ? ucupdate.FullName : "",
                            editdate = x.UpdatedDate.HasValue ? x.UpdatedDate.Value.ToShortDateString() : "",
                            active = x.Active,
                            orgid = x.OrgID,
                            notice = x.TypePosts == 2
                        });
                    }
                }

                return new JavaScriptSerializer().Serialize(new { Status = true, Data = data, TotalItem = totalitem, CurrentPage = currentpage });
            }
            catch (Exception)
            {
                return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Không thể tải được danh sách bài viết" });
            }
        }

        [WebMethod]
        public static string XoaBai(List<int> listid)
        {
            try
            {
                string link = "~/MainSys/Manager/Controls/ctManagementArticle.ascx";
                var currentuser = UserLogin.GetUserID;
                if (!SecurityServices.HasPermison(link, currentuser, TypeAudit.Delete))
                    return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Bạn không có quyền xóa bài viêt" });

                bool kq = true;
                tbPosts_Proxy pr = new tbPosts_Proxy();
                foreach (int x in listid)
                {
                    if (!pr.Delete_tbPosts_Proxy(x))
                        kq = false;
                }
                if (kq)
                    return new JavaScriptSerializer().Serialize(new { Status = true });
                return new JavaScriptSerializer().Serialize(new { Status = false, Cause="Xảy ra lỗi, xóa bài viết không thành công" });
            }
            catch (Exception)
            {
                return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Xảy ra lỗi, xóa bài viết không thành công" });
            }
        }

        [WebMethod]
        public static string DangBai(int idbaiviet, int orgid, string tieude, int theloai, string chuyenmuc, string hinhminhhoa, string noidungvantat, string noidungdaydu)
        {
            try
            {
                string link = "~/MainSys/Manager/Controls/ctAddNewArticle.ascx";
                var currentuser = UserLogin.GetUserID;
                if (idbaiviet > 0)
                {
                    if (!SecurityServices.HasPermison(link, currentuser, TypeAudit.Edit))
                        return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Bạn không có quyền chỉnh sửa bài viết" });
                }
                else
                {
                    if (!SecurityServices.HasPermison(link, currentuser, TypeAudit.AddNew))
                        return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Bạn không có quyền thêm mới bài viết" });
                }


                var user = Utils.UserLogin.GetCurrentUser;
                if (user != null)
                {
                    int? chuyenmucid = null;
                    if (theloai != 2)
                        chuyenmucid = int.Parse(chuyenmuc);
                    var proxy = new tbPosts_Proxy();
                    tbPosts post = null;
                    if (idbaiviet != 0)
                    {
                        post = proxy.GetById_tbPosts_Proxy(idbaiviet).ToObject<tbPosts>();
                        if (post == null)
                            return new JavaScriptSerializer().Serialize(new { Status = false });
                        post.UpdateAuthorID = user.UserID;
                        post.UpdatedDate = DateTime.Now;
                        post.Title = tieude;
                        post.Content = HttpUtility.HtmlEncode(noidungdaydu);
                        post.Intro = HttpUtility.HtmlEncode(noidungvantat);
                        if (hinhminhhoa != null)
                            post.ImagePath = hinhminhhoa;
                        post.PostsCatID = chuyenmucid;
                        post.TypePosts = theloai;
                    }
                    else
                        post = new tbPosts()
                        {
                            Content = HttpUtility.HtmlEncode(noidungdaydu),
                            Intro = HttpUtility.HtmlEncode(noidungvantat),
                            Note = "",
                            NumRead = 0,
                            PostsCatID = chuyenmucid,
                            AuthorID = user.UserID,
                            CreatedDate = DateTime.Now,
                            UpdatedDate = null,
                            UpdateAuthorID = null,
                            TypePosts = theloai,
                            Title = tieude,
                            ImagePath = hinhminhhoa,
                            OrgID = orgid,
                            Active = 1
                        };
                    bool result = false;
                    if (idbaiviet != 0)
                        result = proxy.Update_tbPosts_Proxy(post);
                    else
                        result = proxy.Insert_tbPosts_Proxy(post);
                    if (result)
                        return new JavaScriptSerializer().Serialize(new { Status = true });
                    else
                        return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Xảy ra lỗi, Lưu bài viết không thành công" });
                }
                else
                {
                    return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Xảy ra lỗi, Lưu bài viết không thành công" });
                }
            }
            catch (Exception)
            {
                return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Xảy ra lỗi không mong muốn" });
            }
        }


        [WebMethod]
        public static string ActiveBaiViet(int idbaiviet, bool active)
        {
            try
            {
                string link = "~/MainSys/Manager/Controls/ctAddNewArticle.ascx";
                var currentuser = UserLogin.GetUserID;
                if (!SecurityServices.HasPermison(link, currentuser, TypeAudit.Edit))
                    return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Bạn không có quyền chỉnh sửa bài viết" });

                tbPosts_Proxy pr = new tbPosts_Proxy();
                var post = pr.GetById_tbPosts_Proxy(idbaiviet).ToObject<tbPosts>();
                post.Active = active ? 1 : 0;
                post.UpdateAuthorID = currentuser;
                post.UpdatedDate = DateTime.Now;
                if (pr.Update_tbPosts_Proxy(post))
                    return new JavaScriptSerializer().Serialize(new { Status = true });
                return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Update bài viết thất bại" });
            }
            catch (Exception)
            {
                return new JavaScriptSerializer().Serialize(new { Status = false, Cause = "Update bài viết thất bại" });
            }
        }

    }
}